Systems and Methods for Controlling Pool/Spa Devices

ABSTRACT

Systems and methods are provided for the control of pool/spa device circuits. A control system may control such circuits in response to command data received from local or remote client devices. Feature circuits and light groups may be defined via a user interface to include a group of pool/spa device circuits or light circuits, respectively. Activating a feature circuit may involve performing an associated logic function. Multiple feature circuits may be assigned to a feature circuit group which, when activated, may activate all feature circuits assigned to the feature group. The control system may control the performance of freeze protection and automatic cleaner functions, and may control light circuits to synchronized, color-changing light effects. Commands may be issued to the control system and system data may be stored and retrieved from a remote database via web servers, web application programming interface servers, and/or inter-server communication buses.

BACKGROUND

Residential and commercial pools and spas today are generally associated with a wide variety of electronic devices, such as pumps, chemical controllers, cleaners, lights, and sensors—just to name a few. In order to control such pool and spa devices in a centralized manner, conventional control systems have been developed and implemented. Such conventional control systems tend to rely on direct, physical electrical connection to the devices they control and the devices from which they receive commands from users.

SUMMARY

In light of the deficiencies described above, new systems and methods for providing individuals with the ability to monitor and control the status of water systems and related devices inside and outside of a home or business and to optimize the performance of these systems and devices and overall water use within the home or business are desirable.

In an example embodiment, a system may include a plurality of pool or spa devices, a wireless transceiver, a control system coupled to a remote device via an electronic communication network and the wireless transceiver, the control system being configured to selectively control a plurality of circuits of the plurality of pool or spa devices. The control system may include a memory device configured to store definitions of a first feature circuit and a first logic function, the first feature circuit corresponding to a first subset of the plurality of circuits and being associated with the first logic function, the first logic function defining how the first subset of the plurality of circuits is to be controlled when the first feature circuit is activated, a plurality of communication ports comprising at least one local area network communication port and a plurality of serial communication ports, the at least one local area communication network port being coupled to the wireless transceiver, and the plurality of serial communication ports being coupled to at least one of the plurality of pool or spa devices, a processor coupled to the plurality of communication ports and the memory device, the processor being configured to execute computer-readable instructions. When executed, the computer-readable instructions may cause the processor to receive command data from the remote device via the electronic communication network, and, in response to a first command of the command data, activate the first feature circuit to selectively control the first subset of the plurality of circuits according to the first logic function.

In an example embodiment, a method may include steps for establishing a connection over a computer network between a controller of a pool control system and one or more servers of the pool control system, the controller comprising a processor, a memory electronically accessible by the processor, a wireless transceiver in electronic communication with the processor and configured to connect to the computer network, and a plurality of communication ports electrically connecting the controller to at least one pool or spa device, the one or more servers being geographically remote from the controller, receiving first command data on the one or more servers from a client device configured to display a user interface and to generate the first command data in response to a detected interaction with the user interface, with the one or more servers, sending the first command data to the controller, in response to the first command data, storing, by the processor in the memory of the controller, definitions of a first feature circuit and a first logic function associated with the first feature circuit, the first feature circuit corresponding to a first plurality of circuits corresponding to the at least one pool or spa device, the first logic function defining how the first plurality of circuits is to be controlled when the first feature circuit is activated, receiving second command data on the one or more servers from the client device, the client device being configured to generate the second command data in response to a second detected interaction with the user interface, receiving, by the processor, the second command data from the one or more servers, and, in response to the second command data, determining, by the processor, that the second command data comprises a command to activate the first feature circuit, obtaining, by the processor, the definitions from the memory, identifying, by the processor, the first plurality of circuits based on the definition of the first feature circuit, and selectively controlling, by the processor, the first plurality of circuits according to the first logic function.

In an example embodiment, a system may include a first web server communicatively coupled an electronic communication network, a first web application programming interface (API) server coupled to the first web server, a database server comprising at least one database, the database server being coupled to the first web API server, and a control system configured to control and collect system data from a plurality of pool and spa devices. The control system may include a memory device configured to store computer-readable instructions and to store the system data, a processor configured to execute the computer-readable instructions. The computer-readable instructions, when executed, may cause the processor to periodically upload the system data to the at least one database via the first web server, the first web API server, and the database server, receive command data from a remote client device via the first web API server and the first web server, store, in response to a first command of the command data, definitions of a first feature circuit and a first logic function in a memory device of the control system, the first feature circuit corresponding to a first set of circuits of the plurality of pool or spa devices, the first logic function defining how the one or more circuits are to be controlled when the first feature circuit is activated, and, in response to a second command of the command data, determine that the second command includes a request to activate the first feature circuit, obtain the definitions from the memory device, identify the first set of circuits based on the definitions, and control the first set of circuits according to the first logic function.

DESCRIPTION OF THE DRAWINGS

The invention will be better understood and features, aspects and advantages other than those set forth above will become apparent when consideration is given to the following detailed description. Such detailed description makes reference to the following drawings.

FIG. 1A is a diagram of a computing environment for deploying a network enabled control system in accordance with an embodiment.

FIG. 1B is a block diagram of an example embodiment of various Internet of Things (IoT) pool and spa devices that may be connected to the load center and expansion panels of the network enabled control system, in accordance with an embodiment.

FIG. 2 is an illustrative home screen of a user interface that may be shown via an electronic display of a local or remote user device or control panel, which may facilitate the monitoring and control of connected devices in and around a pool/spa, in accordance with an embodiment.

FIG. 3A is an illustrative usage screen showing a summary view of various usage data parameters and sensor data parameters over two consecutive periods, in accordance with an embodiment.

FIG. 3B is an illustrative usage screen showing a graphical view of pH level compared to ORP level for a pool or spa over a two day period, in accordance with an embodiment.

FIG. 4 is an illustrative light group control screen of a user interface that may be shown via an electronic display of a local or remote user device or control panel, through which groups of connected light circuits may be selected and controlled to perform various user defined and/or predefined functions, in accordance with an embodiment.

FIG. 5 is a flow chart of an example embodiment of a method by which all light circuits of a selected light group may be synchronized and rotated in response to a sync command.

FIG. 6 is a flow chart of an example embodiment of a method by which all light circuits of a selected light group may be synchronized and rotated in a predefined sequence, with delays being applied between the rotations of consecutive lights in the light group in response to a swim command.

FIG. 7 is a flow chart of an example embodiment of a method by which all light circuits of a selected light group may be set to the same color in response to a set command.

FIG. 8 is a flow chart of an example embodiment of a method by which all circuits that are assigned freeze protection may be activated in response to detecting a sufficiently low ambient temperature when a freeze protection setting is active.

FIG. 9 is a flow chart of an example embodiment of a method by which predefined rules associated with the operation or prevention of operation of a pool cleaner pump may be implemented.

FIG. 10 is a flow chart of an example embodiment of a method by which a firmware update for a device connected to the control system may be retrieved and distributed via the control system load center.

FIG. 11A is a block diagram of an example embodiment of an illustrative system architecture by which communication between back-end servers and front-end devices may be facilitated.

FIG. 11B is a block diagram of an example embodiment showing a portion of the system architecture of FIG. 11A, in which a pool/spa computer system is connected to a first server and a user device client is connected to a second server.

DETAILED DESCRIPTION

Before any embodiments are described in detail, it is to be understood that the invention is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the following drawings, which is limited only by the claims that follow the present disclosure. The invention is capable of other embodiments, and of being practiced, or of being carried out, in various ways. Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising,” or “having” and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. Unless specified or limited otherwise, the terms “mounted,” “connected,” “supported,” and “coupled” and variations thereof are used broadly and encompass both direct and indirect mountings, connections, supports, and couplings. Further, “connected” and “coupled” are not restricted to physical or mechanical connections or couplings.

The following description is presented to enable a person skilled in the art to make and use embodiments of the invention. Various modifications to the illustrated embodiments will be readily apparent to those skilled in the art, and the generic principles herein can be applied to other embodiments and applications without departing from embodiments of the invention. Thus, embodiments of the invention are not intended to be limited to embodiments shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein. The following detailed description is to be read with reference to the figures, in which like elements in different figures have like reference numerals. Skilled artisans will recognize the examples provided herein have many useful alternatives and fall within the scope of embodiments of the invention.

Additionally, while the following discussion may describe features associated with specific devices, it is understood that additional devices and or features can be used with the described systems and methods, and that the discussed devices and features are used to provide examples of possible embodiments, without being limited.

Configuring or otherwise modifying the operation of conventional pool/spa control systems generally requires a user to be physically present at a control panel. Additionally, conventional pool/spa control systems may not be scalable (i.e., the ability to connect new devices to the control system may be limited by the number of connections/relays available at a main control panel of the control system).

Thus, there is a need for scalable, remotely accessible control systems for pool and spa applications.

FIGS. 1A and 1B illustrate an example computing environment 100 for wired and/or wireless monitoring and control of electronic and mechanical devices 110 (e.g., pool/spa devices 110) that are deployed in a physical environment, such as a pool/spa environment that includes at least one pool and/or spa 112, via a control system load center 102 and, optionally, expansion panels 108 that may be electrically coupled to the control system load center 102. The control system load center 102 may include one or more LAN communication ports 104, one or more serial communication ports 106, and a processor 103 (sometimes referred to herein as a control system processor) that is coupled to the LAN ports 104 and the serial ports 106. The control system load center 102 may additionally include one or more computer memory devices (not shown). In some embodiments, one or more expansion panels 108 may be connected to the control system load center 102 (e.g., via one or more serial ports 106 of the control system load center 102), which may allow the number of control connections and/or relays used to control the pool/spa devices 110 to be expanded beyond the number that would be available in the control system load center 102 alone. As will be described, the pool/spa devices 110 may be coupled to, integrated with, in fluid communication with, and/or disposed proximal to the pool and/or spa 112. As shown in FIG. 1B, the pool/spa devices 110 may include one or more of a chemical controller 140, smart valves 142, pumps 144, heaters 146, lights 148, sensors 150, an automatic pool cover 152, jets 154, and/or an automatic cleaner 156.

The chemical controller 140 may be part of a water chemistry system in fluid communication with the pool and/or spa 112. The chemical controller 140 may cause the water chemistry system to sanitize (e.g., via the application of chlorine and/or other applicable chemicals to the water of the pool and/or spa 112) and/or pH balance (e.g., via the application of acidic or basic chemicals to the pool and/or spa 112, which may be performed in based on a pH level of the water of the pool and/or spa 112 detected via one or more pH sensors of the water chemistry system) the water of the pool and/or spa 112. The chemical controller 140 may be configured to supply a predetermined amount (e.g., user-defined or service-professional-defined via interaction with the control system load center 102) of chlorine or other sanitization chemical to the water of the pool and/or spa 112 at programmed (e.g., user-defined or service-professional-defined via interaction with the control system load center 102), regularly scheduled intervals. In some embodiments, the chemical controller 140 may be configured to perform a “super chlorination” function, in which currently set chlorine output levels are overridden, and a higher, “super chlorination” output level (e.g., 100% output) is set for a selectable period of time (e.g., 24 hours).

One or more smart valves 142 may be included in the pool/spa devices 110 and coupled to and controlled by the control system load center 102 and/or the expansion panels 108. For example, a given smart valve 142 may include a motorized valve actuator and a valve controlled by the valve actuator having at least an inlet and an outlet through which water may be selectively allowed or disallowed to flow, based on commands received by the valve actuator from the control system load center 102 and/or expansion panels 108. In some embodiments, a valve actuator of a given smart valve 142 may control the flow of water through the corresponding valve according to a defined water flow percentage. For example, a user may set (e.g., via interaction with a user interface displayed on an electronic screen of one of control panels 116, 126 or user devices 127, 128, 130, 134, as will be described) a water flow percentage of 75% for a given smart valve 142 and, in response, the valve actuator of the smart valve 142 may cause the corresponding valve to be opened to 75% of its maximum. In some embodiments, smart valves 142 may be included as one or more of an intake valve (e.g., coupled between the outlet of a pool/spa pump, which may be included in pumps 144, and the pool and/or spa 112), a return valve (e.g., coupled between the inlet of the pool/spa pump and the pool and/or spa 112), a water-feature valve, a solar heater valve, a valve for an in-floor cleaner (e.g., automatic cleaner 156), and/or other applicable valves that may be included in the pool and/or spa environment. In some embodiments, one or more of the smart valves 142 may be included in one or more programmable feature circuits (e.g., defined in memory of the control system load center 102), as will be described.

One or more pumps 144 may be included in the pool/spa devices 110. For example, the pumps 144 may include one or more of: a pool filter pump, a spa filter pump, a combined pool/spa filter pump and/or an automatic cleaner pump. In some embodiments, the filter pump may be a variable speed pump, having two or more selectable pump speeds. The control system load center may control the speed at which the filter pump operates. For example, a user and/or service technician may define the speed at which the filter pump operates via interaction with a user interface displayed on an electronic screen of one of control panels 116, 126 or user devices 127, 128, 130, 134. In some embodiments, a schedule may be created via the user interface, which may define one or more pump speeds at which the filter pump is to be commanded to operate at different times of day and/or on different days of the week, and may define one or more time periods at which the filter pump is to be turned off. In some embodiments, a user or service technician may define programmable “feature circuits,” (i.e., programmed switching circuits), as will be described. These feature circuits may be defined in a memory device of the control system load center 102, for example.

The heaters 146 may include one or more of a solar heater, a gas heater, an electric heater (e.g., an electric heat pump), and/or a hybrid heater (e.g., which may combine a solar heater with a gas and/or electric heater). The heaters 146 may be activated in response to selection by a user via a user interface (e.g., displayed on an electronic screen of one of control panels 116, 126 or user devices 127, 128, 130, 134) or may automatically activate at a predefined time according to a user-created schedule. For systems with multiple heaters 146, a user may select the type or types of heater to activate during a particular time period via the user interface.

For embodiments in which the heaters 146 include a solar heater, a nocturnal cooling feature may be selectively enabled, which provides automatic cooling of pool water during nighttime hours, which may be beneficial for pools that overheat in hot climates. The nocturnal cooling feature may be activated in response to selection by a user via a user interface (e.g., displayed on an electronic screen of one of control panels 116, 126 or user devices 127, 128, 130, 134) or may automatically activate at a predefined time according to a user-created schedule. The nocturnal cooling feature may operate by circulating warm pool water through the solar collector panels at night (e.g., when the collector panels may be cooler than the pool water), which may lower the temperature of the pool water over time.

The lights 148 may include one or more lights that may be any applicable combination of: color changing, submersible, multi-light assemblies, single-light assemblies, light emitting diodes (LEDs), and/or incandescent. As will be described, the lights 148 may be organized into light groups, such that particular functions (e.g., color changing, strobing, pulsing, “swimming”, etc.) of the lights in a given light group may be activated in a synchronized way and/or according to a predefined configuration. In some embodiments, a “light group” may be defined group to which one or more light circuits of the lights 148 have been assigned. For example, light groups may be defined in a memory device of the control system load center 102.

The sensors 150 may include flow sensors, temperature sensors, chemical sensors (e.g., chlorine/pH sensors), splash sensors, and/or any other applicable sensor that may be coupled to the pool and/or spa 112 and/or coupled to or integrated with one or more of the pool/spa devices 110. Each of the sensors 150 may produce respective sensor data, which may differ in format and the property being sensed, depending on the type of sensor being used. For example, flow sensors generate and output flow data corresponding to a detected flow rate of water passing through or proximal to the flow sensors; temperature sensors generate and output temperature data corresponding to detected temperature; chlorine sensors generate and output chlorine level data corresponding to detected chlorine levels in water; pH sensors generate and output pH level data corresponding to detected pH levels in water; splash sensors generate and output motion data, which may be a binary representation that goes high when motion is detected over a predefined threshold and low otherwise, or which may be a more complex representation that logs the magnitudes of detected motion over time. Sensor data generated by the sensors 150 may be transmitted to one or more of the servers 136, 137 (e.g., via the control system load center) and stored in one or more databases stored on one or more memory devices thereof. In some embodiments, the sensor data may be collected and stored locally before being sent to the servers 136, 137. The sensor data may be accessed from the servers 136, 137 by any of user devices 127, 128, 130, 134, for example. The sensor data may be displayed on a user interface on an electronic screen of such user devices in the form of raw data and/or graphs. Sensor data may be displayed in this way for a selected (e.g., selected by the user via interaction with the user interface) time period, such as over the course of hours, days, weeks, months, or years, for example.

The pool cover 152 may be may include a pool cover sensor switch (e.g., in the form of an electric/mechanical switch, which may be a “dry contact”) that may be open or close a circuit (e.g., a circuit coupled to the control system load center 102 or the expansion panels 108) based on whether the pool cover 152 is in an open position or a closed position. . In this way, the control system load center 102 may identify whether the pool cover is open or closed (e.g., with open referring to a state in which the pool cover does not cover the pool, and closed referring to a state in which the pool cover does cover the pool). In some embodiments, the operation of various pool/spa circuits and/or feature circuits may be controlled based on whether the pool cover is open or closed (e.g., determined based on whether the pool cover sensor switch is opened or closed). A pool cover interface screen of the user interface may allow a user to define which pool/spa circuits of the pool/spa device 110, which feature circuits/groups, and which light circuits/groups are activated or deactivated when the pool cover switch is opened and, separately, when the pool cover switch is closed. For example, in an embodiment where the pool cover switch being closed corresponds to the pool cover being closed, when the pool cover switch is closed, the chlorine output of the chemical controller may be decreased (e.g., to 20% of max), laminar flow features may be disabled, and/or a speed of the filter pump may be reduced.

The jets 154 may be disposed at the floor, walls, or other structures of the pool and/or spa 112, and designed to output pressurized water. The jets 154 may be turned on or off based on commands received from the control system load center 102 or the expansion panels 108. In some embodiments, the jets 154 may be controlled by sending commands one or more actuators of the smart valves 142 and/or one or more of the pumps 144, rather than controlling the jets themselves. In some embodiments, the pressure output by the jets 154 may be selectively controllable (e.g., based on user input to a user interface displayed on an electronic screen of one of control panels 116, 126 or user devices 127, 128, 130, 134). In some embodiments, the jets 154 may be configured to operate according to a user-defined schedule.

The automatic cleaner 156 may, for example, be a floor-based automatic cleaner, robotic automatic cleaner, pressure-side automatic cleaner, and/or suction-side automatic cleaner. The automatic cleaner 156 may be turned on or off based on commands received from the control system load center 102 or the expansion panels 108. In some embodiments, the automatic cleaner 156 may be configured to operate according to a user-defined schedule. The automatic cleaner 156 may include an automatic cleaner pump, the operation of which may be limited based on whether other pool/spa devices (e.g., a solar heater of the heaters 146, a spa pump, etc.) are active, as will be described later in connection with FIG. 9.

Returning to FIG. 1A, the control system load panel 102 and the expansion panels 108 may be connected to one or more of the pool/spa devices 110 through various wired connections. For example, the control system load panel 102 may include multiple high voltage relays (e.g., 120 V and/or 240 V) in addition to the serial communication ports 106 and LAN ports 104, through which the pumps 144, and lights 148 of the pool/spa devices 110 may be selectively powered. In some embodiments, the control system load panel 102 and/or the expansion panels 108 may include one or more low voltage control ports and relays (e.g., capable of outputting and/or controlling low voltage control signals, which may be 12V, 24V, or another applicable voltage). In some embodiments, expansion boards may be installed in the system load panel 102 and/or the expansion panels 108, which may provide additional high or low power relays and/or control ports (e.g., for controlling the smart valves 142).

Some or all of the control system load center 102, the expansion panels 108, and/or the pool/spa devices 110 may be natively or retroactively enabled to connect to the internet or another wide-area network (WAN) cloud 132 via a base station/gateway/router 124 to send and receive electronic data. In some embodiments, some or all of the pool/spa devices may be Internet of Things (IoT) devices. Each of the IoT devices may be embedded with electronics, software, sensors, actuators, and network connectivity, either within the device itself or in cooperation with one or more connected servers 136, which enable the IoT devices and their embedded software to collect and exchange data. In some embodiments, the IoT devices of the pool/spa devices 110 may communicate with the servers 136 and/or remote user devices 134 via electronic communication between the control system load center 102 and the pool/spa devices 110 (e.g., via serial ports 106 of the control system load center 102, and/or a wireless transceiver, such as wireless transceiver 114), via communication between the control system load center 102 and the base station/gateway/router 124 (e.g., via LAN ports 104 of the control system load center 102 and/or via the wireless transceiver 122), and via communication between the base station/gateway/router 124 and the remote user devices 134 and/or servers 136 via the WAN 132. It should be understood that, while the pool/spa devices 110 may include serial communications capabilities and may be connected to the control system load center 102 via serial ports 106, some or all of the pool/spa devices 110 may include wireless communication capabilities. In such embodiments, wireless enabled devices of the pool/spa devices 110 may connect to and communicate with the control system load center 102 via the wireless transceiver 114 or through the wireless transceiver 122 via a wireless connection to the base station/gateway/router 124.

In some embodiments, the control system load center 102 may include a wireless access point to which these wireless enabled devices may connect. In some embodiments, communication between the control system load center 102 and these wireless enabled devices may be performed, such that data is wirelessly transmitted from a wireless enabled device to the base station/gateway/router 124 or another base station/gateway/router that is part of a separate LAN, then the data is passed through the internet/WAN network 132 to servers 136/137, the servers then passing the data back through the internet/WAN network 132, through the base station/gateway/router 124, through the wireless transceiver 122 and/or the LAN ports 104 to the control system load center 102. Communication of data from the control system load center 102 to the wireless enabled device would reverse this data path. This latter example may allow a single control system load center 102 to communicate with and control multiple sets of wireless enabled pool/spa devices that may be communicatively coupled to multiple LANs, thereby allowing for the control and monitoring of multiple pools and/or spas at different locations with a single control system load center 102.

In some embodiments, one or more of the expansion panels 108 may also be wireless enabled (e.g., containing or being coupled to a wireless network interface circuit/module), and may utilize wireless communication to send and receive data to/from the control system load center 102 using data paths similar to those examples described above in connection with the wireless enabled pool/spa devices.

Additionally, local user devices 127, which may include smartphones and client computers, such as a mobile computing device 128 and a client computing device 130, respectively, may communicate with the pool/spa devices 110 via the base station/gateway/router 124, the control system load center 102, and/or the expansion panels 108. As shown, in some embodiments the wireless transceivers 122 and 114 may be auxiliary devices (e.g., such as wireless dongles) that are connected to the control system load center 102 via connections to LAN ports 104 and serial ports 106 of the control system load center 102, respectively. However, in other embodiments, one or both of the wireless transceivers 122 and 114 may be internal components of the control system load center 102 (e.g., as part of one or more printed circuit boards, network interface cards, and/or other applicable substrates). In some embodiments, the wireless transceiver 122 may communicate with the base station/gateway/router 124 via a wireless communication protocol, which may be, for example, a communication protocol corresponding to one or more of the IEEE 802.11 standards, such as Wi-Fi™ (e.g., operating in the 2.4 and/or 5 GHz bands). As shown, in some embodiments, one or more of the LAN ports 104 of the control system load center may alternatively or additionally be electrically coupled to the base station/gateway/router 124 via a physical, wired connection (e.g., via an Ethernet cable, such as CAT5/CAT5e/CAT6).

In some embodiments, various IoT devices of the pool/spa devices 110 in an environment 100 may send and/or receive data transmissions over the WAN 132, a local area network (LAN) (e.g., consisting of local devices connected to the base station/gateway router 124), and/or another communication network using any suitable communication protocol. For example, the IoT devices may communicate over the LAN (e.g., via the base station/gateway router 124) with the local client computing device 130, such as in a private network where transmitted data to/from the IoT devices is isolated from the internet or another WAN 132, at least until the data is processed by the local client computing device 130. Local user devices 127 may also be connected to the base station/gateway router 124 in order to access the data generated by the IoT devices as described below. In some embodiments, IP connectivity may be used, connecting the LAN corresponding to the base station/gateway/router 124 to the Internet or another WAN 132, so that remote user devices 134 (e.g., remote smart phones, computers, and other applicable network-enabled client devices) and servers 136 may communicate with the control system load center 102 and/or the pool/spa devices 110.

In some embodiments, IoT devices of the pool and spa devices 110 and/or the control system load center 102 may communicate with and directly use the resources of one or more physical, remote server computing devices of the servers 136, which may be deployed in one or more data centers (for example) in a particular geographic location or dispersed throughout several geographic locations. In other embodiments, the servers 136 may cooperate to provide virtualized computing resources that can be allocated for use by, for example, an authorized user of a computing resource service provider. Thus, a user that controls, or provides services for, the IoT devices of the pool/spa devices 110 and/or the control system load center 102 may configure and deploy one or more virtual servers 137 that are allocated the use of certain physical computing resources, such as processor cycles, memory, data storage, etc., of the physical servers 136; the IoT devices of the pool/spa devices 110 and/or the control system load center 102 may, in turn, be configured to connect to the virtual servers 137. For example, an IoT device may be programmed to connect to an IP address associated with an endpoint that connects a virtual network adapter of the servers 137 to a physical network adapter of the physical servers 136. The virtual servers 137, or the computing resource service provider's computing environment in which the virtual servers 137 are deployed, may provide other computing resource services for implementing an IoT platform.

A user may operate one or more local user devices 127, which may include client computing devices 130, such as a desktop or laptop computer, or a mobile computing device 128 such as a phone or tablet, running client software that enables the devices 127, 128, 130 to access an interface to the IoT platform provided by a server 136, 137. Each of these client computing devices 127, 128, 130 may include at least one processor executing specific computer-executable instructions (i.e., the running software) stored in a memory coupled to the client computing device. The user may access and run a client-based software such as a web browser or web application, in order to request access to the system level software and/or the GUI (e.g., by entering a Uniform Resource Locator (URL) for a web page including the GUI). This request may identify the IP address for the server(s), as well as instructions to generate and render the GUI and/or web page for the system level software. The server(s) may execute one or more software instructions to generate and render the GUI, and transmit it to the client computing device 127, 128, 130 for display. The server(s) 136, 137 may include components and data processing capabilities used to host and run software applications that allow for bi-directional communication between each IoT device of the pool/spa devices 110 and/or the control system load center 120 and the server(s). For example, the server(s) may host the customizable software that is deployed to, and installed on, each IoT device and/or the control system load center 102. The server(s) may also run the software and protocols for other services used by the IoT platform, as well as for the interface to the client computing devices 127, 128, 130. Example uses of the user interface to the IoT platform include configuring and deploying server resources, configuring and deploying software and settings for IoT devices, obtaining and/or reviewing data collected by the server(s) from the IoT devices of the pool/spa devices (e.g., viewing current status and/or historical data collected over time), performing and/or reviewing data analysis, accessing particular IoT devices, etc. Additionally, the computing devices 127, 128, 130 and/or the control panels 116, 126 may act as “control devices” for the control system load center 102, and may send commands to the control system load center 102 in the form of one or a series of control signals (sometimes referred to as “command data”). For example, in response to commands received from the control devices, the control system load center 102 may selectively activate, deactivate, or otherwise control one or more pool/spa devices 110, one or more feature circuits, feature circuit groups, and/or light groups and corresponding logic functions may be defined (e.g., programmed) for circuits of the pool/spa devices 110, and/or settings of the control system load center 102 may be customized. For example, a given feature circuit may be defined in memory (e.g., in response to corresponding command data received from a client device) along with a logic function that causes all circuits assigned to the feature circuit to be turned off, a logic function that causes all circuits assigned to the feature circuit to be turned on, a logic function that causes a first subset of the circuits assigned to the feature circuit to be turned off any time a second subset of the circuits assigned to the feature circuit are turned on, a logic function that defines time-based rules for the activation and/or deactivation of at least a first circuit assigned to the feature circuit in relation to the activation and/or deactivation of at least a second circuit assigned to the feature circuit (e.g., the first circuit must be turned on for at least five minutes before the second circuit is turned on; the first circuit must be turned off for at least ten minutes if the second circuit is turned on while the first circuit is on, etc.), or other applicable logic functions. Generally, the logic function associated with a feature circuit defines how pool/spa device circuits assigned to the feature circuit are to be controlled (individually or with respect to other pool/spa device circuits assigned to the feature circuit) when the feature circuit is activated.

As another example, a client device (e.g., the wireless control panel 116, the indoor control panel 126, and/or or local or remote user devices 127, 128, 130, 134) may send a first command to the control system load center 102 (e.g., or a processor thereof), the first command defining a feature circuit according to circuits (e.g., pool/spa device circuits) assigned to the feature circuit (e.g., in response to user input provided at a user interface of the client device), and the first command further defining a corresponding logic function that is to be performed in connection with the circuits assigned to the feature circuit when the feature circuit is activated. The control system load center 102 may cause definitions of the feature circuit and the logic function to be stored in a memory device of the control system load center 102. The client device may later send a second command to the control system load center 102, the second command requesting the activation of the feature circuit that was defined based on the first command. A processor of the control system load center 102 may retrieve the definitions of the feature circuit and the logic function from the memory device in response to the second command. The processor of the control system load center 102 may identify the pool/spa device circuits assigned to the feature circuit based on the definition of the feature circuit. The processor of the control system load center 102 may then selectively control the circuits assigned to the feature circuit according to the logic function.

Various dedicated devices, such as a “QuickTouch” remote 120, a wireless control panel 116, and/or an indoor control panel 126, may be configured to interact with (e.g., control and/or retrieve data from or related to—via wired or wireless electronic communication) the control system load center 102 and/or the pool/spa devices 110.

For example, the indoor control panel 126 may be electrically coupled to and in electronic communication with the control system load center 102 (e.g., via a serial connection, such as a RS485 connection). The indoor control panel 126 may include an electronic screen that may display a user interface through which a user may interact with the control system load center 102 and the pool/spa devices 110. For example, the electronic screen of the indoor control panel 126 may be a capacitive touch screen.

For example, the wireless control panel 116 may be wirelessly connected to the control system load center 102 via a wireless transceiver 114 that may be connected to (e.g., via a serial connection, such as RS485, between the wireless transceiver 114 and the serial ports 106) or integrated with the control system load center 102. In some embodiments, wireless communication between the wireless control panel 116 and the wireless transceiver 114 may be performed according to a predefined wireless communication protocol, which may be, for example, a personal area network (PAN) communication protocol such as Bluetooth®. The wireless control panel 116 may be a portable device (e.g., battery powered). The battery of the wireless control panel 116 may be recharged by placing the wireless control panel 116 in a docking station (e.g., sometimes referred to as a “cradle”), which may interface with contacts of the wireless control panel 116 through which the docking station supplies power to recharge the battery of the wireless control panel 116. The wireless control panel 116 may be water resistant, so that handling the wireless control panel 116 with wet hands or incidental splashing of the wireless control panel 116 will not substantially damage the device. The wireless control panel 116 may include an electronic screen that may display a user interface through which a user may interact with the control system load center 102 and the pool/spa devices 110. For example, the electronic screen of the wireless control panel 116 may be a capacitive touch screen.

The QuickTouch remote 120 may be similarly wirelessly coupled to the wireless transceiver 114 according to a similar or the same protocol as used by the wireless control panel 116. In some embodiments, the QuikTouch remote 120 may communicate with the wireless transceiver 114 via a default or user-defined “remote channel”, which may correspond to a particular radio frequency (RF) communication frequency or frequency band. The QuickTouch remote may include a finite number of buttons, rather than a screen with a user interface. Each button of the QuickTouch remote may be programmed (e.g., via the user interface accessible via the wireless control panel 116, the indoor control panel 126, and/or or local or remote user devices 127, 128, 130, 134) to, in response to being pressed, cause a defined operation of one or more of the pool/spa devices 110 to be performed. For example, a given button of the QuickTouch remote may be configured to increase or decrease a temperature of a spa via control of one or more of the heaters 146, to activate, deactivate, or otherwise control the pool or spa lights 148 (e.g., initiating, in some embodiments, the performance predefined “light shows” by groups of lights of the pool/spa devices 110, as will be described), to activate or de-activate the pool and/or spa jets 154, and/or to cause any other applicable function of the pool/spa devices 110 to be performed.

FIG. 2 shows an illustrative home screen 200 of a user interface which may be displayed on an electronic screen of a computing device (e.g., the wireless control panel 116, the indoor control panel 126, and/or or local or remote user devices 127, 128, 130, 134 of FIG. 1A). As shown, the home screen 200 may include a number of icons 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226.

Icon 202, shown as a pool in the present example, may be selected by a user to access a pool screen of the user interface. At the pool screen, for example, operation of the pool filter pump (e.g., of pumps 144 of FIG. 1B) may be controlled, operation of one or more heaters (e.g., of heaters 146 of FIG. 1B) may be turned on/off, the temperature of the pool may be set to a defined temperature (e.g., a setpoint temperature), and/or restrictions on the pool pump may be overridden while a freeze protection mode is active (as will be described).

Icon 204, shown as a spa in the present example, may be selected by a user to access a spa screen of the user interface. At the spa screen, for example, operation of the spa pump (e.g., of pumps 144 of FIG. 1B) may be controlled, operation of one or more heaters (e.g., of heaters 146 of FIG. 1B) may be turned on/off, a spa water temperature setpoint may be defined and/or restrictions on the pool pump may be overridden while the freeze protection mode is active (as will be described).

Icon 206, shown as a waterfall feature in the present example, may be selected by a user to access a feature screen of the user interface. At the feature screen, individual feature circuits or groups of feature circuits may be controlled (e.g., turned on and off).

As described above, a user or service technician may define one or more feature circuits via the user interface (e.g., of wireless control panel 116, the indoor control panel 126, and/or or local or remote user devices 127, 128, 130, 134 of FIG. 1A). These feature circuits may allow advanced functions to be selectively performed without wasting valuable relay outputs or auxiliary (AUX) circuits. Additionally, feature circuits provide flexibility in that they may be added or deleted via interaction with the user interface, which may not be possible for auxiliary circuits (e.g., without adding or removing a physical expansion panel/card).

For example, a feature circuit may be assigned for controlling multiple valve actuators (e.g., smart valves 142 of FIG. 1A) in a system. A feature circuit may be assigned (i.e., programmed) as a way to select the speed of a 2-speed or other variable speed filter pump (e.g., pumps 144 of FIG. 1A). A feature circuit may also be assigned to activate a spa spillway effect, where in a pool/spa combination (e.g., pool and/or spa 112 of FIG. 1A), the pool water can be diverted to the spa and then spill back to the pool. For example, multiple circuits corresponding to one or more pool/spa devices (e.g. pool/spa devices 110 of FIG. 1A) may be assigned to a given feature circuit, with logic associated with (e.g., programmed for) the feature circuit defining the operation of pool/spa device circuits assigned to the feature circuit (e.g., at defined times, under defined conditions, etc.). Here, a “pool/spa device circuit” may refer to an electric circuit that controls whether one or more corresponding pool/spa devices are turned on or off, may refer to an electric circuit that controls the speed of a variable speed pump, and/or may refer to an electric circuit that controls a characteristic (e.g., light color, level of valve actuation) of a pool/spa device.

When defining a feature circuit, each circuit assigned to the feature circuit may be defined as “on,” “off,” or “undefined” (e.g., “don't care”), such that, when a given feature circuit is activated, all circuits of the feature circuit defined as “on” may be turned on, all circuits of the feature circuit defined as “off” may be turned off, and all circuits of the feature circuit that are “undefined” may be left unchanged.

In some embodiments, a feature circuit group may be defined for a number of feature circuits. The feature circuit group may allow multiple feature circuits to be turned on and/or off with a single button press at the user interface, by activating or deactivating the feature circuit group via the single button press.

A “valve actuators” screen can be provided in the user interface for configuring valve actuators to be controlled by one or more feature circuits. The system (e.g., the control system load center 102 of FIG. 1A and 1B) can drive one or more auxiliary valve actuators for applications such as solar heating and water features.

Icon 208, shown as a pool light in the present example, may be selected by a user to access a light screen of the user interface. At the light screen, individual lights or defined groups of lights may be selectively controlled. An example of the light screen is described below (e.g., in connection with FIG. 3). For example, individual or groups of color lights may be turned on or off, color set, color sync, and color swim features may be selectively activated, and preset light shows may be activated. Color set, color sync, and color swim features are described below (e.g., in connection with FIGS. 5-7).

Icon 210, shown as a clock in the present example, may be selected by a user to access a schedule screen of the user interface. At the schedule screen, daily pool/spa operations (e.g., operations of the pool/spa devices 110 of FIGS. 1A, 1B) may be schedule to occur during time periods that may be defined by the user. In addition to a “normal” daily pool/spa operational schedule, a separate “vacation mode” daily pool/spa operational schedule may be defined by the user via the schedule screen, or a sub-screen thereof. This vacation mode schedule may be active only when a user initiates vacation mode (e.g., via selection of a vacation mode button displayed on the schedule screen of the user interface).

Icon 212, shown as a bar chart in the present example, may be selected by a user to access a usage screen of the user interface. At the usage screen, usage data (e.g., for one or more of the pool/spa devices 110 of FIG. 1A, 1B), and/or a sensor data may be displayed. The displayed sensor data may be include data collected from sensors (e.g., sensors 150 of FIG. 1B) that are coupled to pool/spa devices and/or that are disposed in the general area of the pool and/or spa (e.g., ambient temperature sensors) over time. The usage data and the sensor data may be stored locally on one or more memory devices of one or more local computer systems and/or remotely on one or more memory devices of one or more remote computer systems (e.g., local user devices 127 and/or servers 136, 137 of FIG. 1A). For example, the usage data may include heater usage (e.g., gas heater usage, heat pump usage, hybrid heater usage), pump usage (e.g., pool pump usage, spa pump usage, automatic cleaner pump usage), chemical feed time (e.g., pH feed time, oxidation-reduction potential (ORP) feed time), and/or pump speed (e.g., for variable speed pumps). For example, the sensor data may include air temperature (e.g., measured by an ambient temperature sensor of the sensors 150 of FIG. 1B), pool water temperature (e.g., measured by a water temperature sensor of the sensors 150 of FIG. 1B), spa water temperature (e.g., measured by a water temperature sensor of the sensors 150 of FIG. 1B), solar temperature (e.g., measured by a temperature sensor of the sensors 150 of FIG. 1B that is in thermal communication with a solar panel of a solar heater coupled to the pool and/or spa), pH level data (e.g., measured by a pH sensor of the sensors 150 of FIG. 1B, which may be coupled to or integrated with a chemical controller, such as chemical controller 140 of FIG. 1B), and/or ORP level data (e.g., measured by a ORP sensor of the sensors 150 of FIG. 1B, which may be coupled to or integrated with a chemical controller, such as chemical controller 140 of FIG. 1B). These examples of usage data and sensor data are intended to be illustrative and not limiting. If desired, other applicable usage and/or sensor data may be collected, stored, and displayed on the usage screen.

The displayed usage data and sensor data may be displayed as a graph, group of graphs, and/or as a list, and may correspond to a selected time period (e.g., with only usage and sensor data corresponding to the selected time period being displayed). The user may be provided with multiple options via the usage screen that allow the selection of a type of usage data or sensor data to view and a time period over which to view the selected data (e.g., which may be defined in days, weeks, months, or years). In some embodiments, the options may include an option for the display of two or more selected types of usage data and/or sensor data to display on a single graph (e.g., which may be used to compare the data of the selected types). As an example, a user may select average daily air temperature and daily gas heater usage to be displayed on a single graph of the usage screen over a period of one month. In some embodiments, the options may include an option for the display of a single type of usage data or sensor data for two selected time periods (e.g., the two most recent, consecutive time periods) overlaid on a single graph. In some embodiments, multiple individual graphs, each corresponding to a different type of usage data or sensor data and a selected time period, may be shown together on the usage screen.

An example of a usage screen 300 that includes a summary view of usage and sensor data, (e.g., which may be accessed via selection of the icon 212 of FIG. 2) is shown in FIG. 3A. As shown, the usage screen 300 provides a comparative listing of air temperature, pool water temperature, spa water temperature, gas heater usage, pool pump usage, and spa pump usage for a current 30 day period and for a preceding 30 day period. The usage screen 300 includes a graph icon 302 which, when selected, causes a graph of a user-selected usage data type or sensor data type to be displayed over a defined time period., and a comparative graph icon 304 which, when selected, causes a comparative graph of two or more user-selected usage data types and/or sensor data types to be displayed over a defined time period.

FIG. 3B shows an example of a usage screen 306 (e.g., which may be accessed via selection of a comparative graph icon 304 on the usage screen 300 of FIG. 3) that includes a comparative graph view of detected ORP values (e.g., on a scale of 0 to 1 volts) to detected pH values (e.g., on a scale of 0-10) over a two day period.

Returning to FIG. 2, icon 214, shown as a droplet and test tube in the present example, may be selected by a user to access a chemistry screen of the user interface. At the chemistry screen, the current pH, ORP, water balance, and salt content of the water are displayed. In some embodiments, a tank indicator may be shown, representing the level of acid (e.g., muriatic acid) present in the chemical controller system of the pool/spa. From the chemistry screen, a user may adjust a pH setpoint, adjust water balance settings (e.g., salt level, calcium hardness, alkalinity, and cyanuric acid level), adjust chlorine output to one or more bodies of water (e.g., pools/spas), and/or adjust an ORP level set point, and adjust the level of the tank indicator to match the actual level of the corresponding acid tank. In some embodiments, alerts may be shown on the chemistry screen, which may include chlorine tank salt level alerts (e.g., corresponding to low detected salt level in the chlorine tank of the chemical control system, below a predefined threshold), water salt level alerts (e.g., corresponding to low detected salt level in parts per million in the water of the pool and/or spa), pH level alerts (e.g., that occur when detected pH level is outside of a predefined range, such as 7.2 to 7.8) , and/or ORP level alerts (e.g., that occur when detected ORP level is outside of a predefined range, such as 400 mV to 800 mV).

Icon 216, shown as a letter “i” in the present example, may be selected by a user to access a status/alerts screen of the user interface. The status/alerts screen may display the current system status, warnings, and alerts. For example, a color coded system may be employed, where warnings (e.g., low voltage conditions, system power loss, device communication loss, pool/spa chemical imbalances, and the like) are shown with a red indicator, caution alerts (e.g., chemical feeder errors, low chemical tank levels, and the like) are shown with an orange indicator, system status conditions (e.g., heater cool-down delays, informational pump speed and/or power usage, and the like) are shown with a blue indicator, and a green indicator is shown when no warnings/alerts/errors have been detected. In some embodiments, the particular types of alerts and status information generated by the system and shown at the status/alerts screen may be selectively enabled via the user interface. For example, the user may be provided with a list of alert types and status information types via the user interface, and may selectively enable or disable each alert type and status information type.

Icon 218, shown as a gear in the present example, may be selected by a user to access a settings screen of the user interface. The settings screen may provide a user with a number of options for viewing and potentially changing settings of the control system. For example, the settings screen may include options for the initiation of a vacation mode, the initiation of a service mode, accessing and viewing of support information, altering general settings such as touchscreen settings, location, date/time, units, features, lights list order, backlight setting, temperature sensor calibration, day/night themes, manual operation priority, and chemistry readings, accessing the alerts and notifications screen, defining security settings such enabling passcode protection for the control system and establishing administrator and guest passcodes, creating or logging into a user account of a web portal, viewing and/or editing light groups/feature circuits/feature circuit groups, rebooting the system (e.g., rebooting the control system load center 102 of FIGS. 1A, 1B), setting up remotes, configuring the system (e.g., the control system load center 102 of FIGS. 1A, 1B) as part of an installation setup, configuring a communications network (e.g., in communication with the control system load center 102 of FIG. 1A, 1B) such as an Ethernet or wireless network, wireless remote setup, defining delay settings (e.g., for valves, heater cool down, override delays, etc.), viewing system information, importing and/or exporting system configurations and status logs, restoring factory default settings of the system, and/or initiating a setup “wizard” to configure the system with a step-by-step digital assistant.

Icon 220, shown partially overlapping the icon 202, may show the temperature of a corresponding pool, and a temperature setpoint. When a heater of the pool is turned off, the temperature setpoint may be omitted from the icon 220. While not shown in the present example, an icon that is similar to icon 220 may be displayed overlapping the icon 204, which may show the temperature of a corresponding spa and a temperature setpoint.

Icon 222, shown partially overlapping the icon 206, may show a number representing the number of connected features that are presently active (e.g., that have been manually switched on).

Icon 224, shown partially overlapping the icon 208, may show a number representing the number of connected lights that are presently active (e.g., that have been manually switched on).

Icon 226, shown partially overlapping the icon 216, may show a number representing the number of unresolved alerts/warnings (sometimes referred to herein as alert data) that have been generated for the control system.

FIG. 4 shows an illustrative light screen 400 (e.g., which may be accessed via the selection of the icon 208 of FIG. 2) of a user interface which may be displayed on an electronic screen of a computing device (e.g., the wireless control panel 116, the indoor control panel 126, and/or or local or remote user devices 127, 128, 130, 134 of FIG. 1A). As shown, the light screen 400 may include light group selection buttons 402, 404, 406, 408, light group edit buttons 410 for each light group, sync buttons 412, set buttons 414, and swim buttons 416.

For example, the light group selection button 404 may be defined to correspond to a group of lights located in and around the landscape in the general area of a pool and/or spa. The light group selection button 408 may be defined to correspond to all lights located on and/or around a waterfall feature of the pool/spa. When one of the light group selection buttons 402, 404, 406, 408 is selected by a user via interaction with the user interface, the corresponding lights of that light group will activate or deactivate according to a preset function defined for that light group (e.g., turning all lights in the group on or off, switching colors of all lights in the group, starting a light show with the lights in the group in which the lights may be turned on and off and/or may change color according to a predefined sequence, etc.).

The light group edit button 410, when selected, may bring up a light group settings screen in which the colors of one or more individual lights in the corresponding light group may be selected, and in which lighting mode may be changed (e.g., from fixed color mode to light show mode in which a light show may be performed by the lights of the light group).

The light group sync button 412, when selected, may activate a sync function in which all lights in the group are synchronized to a common color at the beginning of a predefined color rotation, and a light color rotation (e.g., in a predefined sequence defined by color wheels of the lights) begins after a delay (e.g., a delay of 21 seconds).

FIG. 5 shows an illustrative process flow for a method 500 by which a sync function may be performed by a light group in response to a “sync” command. At step 502, a light screen (e.g., light screen 400 of FIG. 4) may be displayed on a user interface shown on an electronic screen of a local or remote control device (e.g., control panels 116, 126 or user devices 127, 128, 130, 134 of FIG. 1A) in electronic communication with a pool/spa control system. Essentially, the sync function may set all lights in the light group to the same color and may cause these lights to begin rotating at the same rate at the same time. The lights of the light group may each include a color wheel (e.g., a rotating wheel having different sections corresponding to color filters of different colors, such that when a given color filter is aligned with the light source of a particular light, the light color output by that light will correspond to the color of the given color filter) that, when rotated, causes the lights to change color according to a predefined sequence.

At step 504, a control system processor (e.g., control system processor 103 of control system load center 102 of FIGS. 1A, 1B) may detect/determine that a sync command has been selected (e.g., in response to selection of the light group sync button 412 of FIG. 4), corresponding to a selected light group.

At step 506, the control system processor may cause all lights in the selected light groups to be set (i.e., synchronized) to the same color. This color may correspond to the beginning of a predefined color rotation (e.g., a defined “beginning color” of the light wheel), in some embodiments.

At step 508, after a predefined delay, the control system processor may cause the colors of all lights in the selected light group to begin rotating according to a predefined sequence (e.g., of the light wheel).

The method 500 may be executed, at least in part, using a local device communicating with the control system via one or more local wireless connections or networks, or may be executed using a remote device communicating with the control system via a WAN and/or the internet. Additionally, in some embodiments in which a remote device is used in the execution of the method 500, one or more physical and/or virtual servers may facilitate communication between the remote device and the control system.

Returning to FIG. 4, the light group swim button 416, when selected, may activate a sync function in which all lights in the group are synchronized to a common color at the beginning of a predefined color rotation, and a light color rotation (e.g., in a predefined sequence according to a color wheel) begins after a delay (e.g., a delay of 21 seconds).

FIG. 6 shows an illustrative process flow for a method 600 by which a swim function may be performed for a light group in response to a “swim” command. At step 602, a light screen (e.g., light screen 400 of FIG. 4) may be displayed on a user interface shown on an electronic screen of a local or remote control device (e.g., control panels 116, 126 or user devices 127, 128, 130, 134 of FIG. 1A) in electronic communication with a pool/spa control system.

At step 604, a control system processor (e.g., control system processor 103 of control system load center 102 of FIGS. 1A, 1B) may detect/determine that a swim command has been selected (e.g., in response to selection of the light group swim button 416 of FIG. 4), corresponding to a selected light group.

At step 606, the control system processor may cause all lights in the selected light group to be set (i.e., synchronized) to the same color. This color may correspond to the beginning of a predefined color rotation, in some embodiments.

At step 608, the control system processor may cause (e.g., via electronic communication) a first light of the light group to begin rotating according to a predefined sequence. For example, the predefined sequence may correspond to the predefined color rotation of a color wheel.

At step 610, the control system processor may determine whether there are lights remaining in the light group that have not begun rotating. If are all lights in the light group are determined to have begun rotating, the method 600 ends. The lights of the light group may continue to rotate according to the predefined sequence after the method 600 ends. If at least one light of the light group is determined to have not begun rotating, then the method 600 proceeds to step 612.

At step 612, after a predefined delay (e.g., defined in a memory device of the control system load center 102 of FIG. 1), the control system processor may cause (e.g., via electronic communication) a new light in the light group to begin rotating according to the predefined sequence. Here, the “new light” refers to a light of the light group that has not begun rotating immediately prior to the execution of step 612. In some embodiments, the light group may be organized as an ordered list (e.g., in a memory device of the control system load center 102 of FIG. 1), where the order in which new lights begin rotating corresponds to the order of lights provided in the ordered list. By delaying the rotation of each light in the light group in a particular order, a “swim” effect may be created in which different colors of light appear to be “swimming” across the water of the pool or spa as the lights in the light group rotate colors.

The method 600 may be executed, at least in part, using a local device communicating with the control system via one or more local wireless connections or networks, or may be executed using a remote device communicating with the control system via a WAN and/or the internet. Additionally, in some embodiments in which a remote device is used in the execution of the method 600, one or more physical and/or virtual servers may facilitate communication between the remote device and the control system.

Returning to FIG. 4, the light group set button 414, when selected, may activate a set function in which all lights in the group are synchronized to a default color or a set of default colors.

FIG. 7 shows an illustrative process flow for a method 700 by which a set function may be performed for a light group in response to a “set” command. At step 702, a light screen (e.g., light screen 400 of FIG. 4) may be displayed on a user interface shown on an electronic screen of a local or remote control device (e.g., control panels 116, 126 or user devices 127, 128, 130, 134 of FIG. 1A) in electronic communication with a pool/spa control system.

At step 704, a control system processor (e.g., control system processor 103 of control system load center 102 of FIGS. 1A, 1B) of a pool/spa control system may detect/determine that a set command has been selected (e.g., in response to selection of the light group set button 414 of FIG. 4), corresponding to a selected light group.

At step 706, the control system processor may cause (e.g., via electronic communication) all lights in the selected light group to be set to a default color. For example, prior to selecting the set command, the user may define (e.g., via a settings screen accessed via icon 218 of FIG. 2) a single default color or to which the lights in the selected light group are to be set in response to the set command. In this way, the lights of the light group may cause all lights in the light group to be set to a single predefined color in response to a single user command (e.g., a single press of the light group set button 414).

The method 700 may be executed, at least in part, using a local device communicating with the control system via one or more local wireless connections or networks, or may be executed using a remote device communicating with the control system via a WAN and/or the internet. Additionally, in some embodiments in which a remote device is used in the execution of the method 700, one or more physical and/or virtual servers may facilitate communication between the remote device and the control system.

A user may define one or more feature circuits via the user interface associated with the control system. The feature circuits may assign programmed logic functions to one or more circuits of pool/spa devices (e.g., pool/spa devices 110 of FIGS. 1A, 1B), as described above.

In some embodiments, a “freeze protection” feature may be enabled for one or more pool/spa device circuits and/or feature circuits, such that corresponding freeze protect logic may protect the associated pool/spa devices when temperatures drop to or below freezing and a freeze protection mode is activated. For example, while freeze protection mode is active, the system (e.g., a processor thereof) may cause one or more pumps (e.g., of pumps 144 of FIG. 1B) to run and for one or more valves actuators to open their corresponding valves when a temperature sensor (e.g., of sensors 150 of FIG. 1B) detects that an ambient temperature has fallen below a predefined temperature threshold (e.g., <36° F.), such that water runs through some or all of the pipes of the pool/spa system, potentially preventing these pipes from freezing and/or bursting. The freeze protection mode may continue to be active until the freeze condition is determined to have ended (e.g., (e.g., ambient temperature >36° F.). Freeze protection may be enabled or disabled (e.g., by turning freeze protection “ON” or “OFF”) by a user via a corresponding settings screen (e.g., accessible via selection of icon 218 of FIG. 2) of a user interface of a local or remote control device (e.g., control panels 116, 126 or user devices 127, 128, 130, 134 of FIG. 1A). In some embodiments, freeze protection for a given pool/spa device may be overridden in response to a user interaction with the user interface of a control device (e.g., control panels 116, 126 or user devices 127, 128, 130, 134 of FIG. 1A).

FIG. 8 shows an illustrative process flow chart for a method 800 by which a freeze protection mode (e.g., control system state) may be automatically activated and deactivated based on detected ambient temperatures. At step 802, a control system processor (e.g., control system processor 103 of control system load center 102 of FIGS. 1A, 1B) of a pool/spa control system may determine that the ambient temperature in the region of a pool/spa (e.g., pool and/or spa 112 of FIG. 1A) associated with the control system is at or below a predefined ambient temperature threshold (e.g., ≤36° F.). For example, in making this determination, the control system processor may compare the ambient temperature threshold to ambient temperature data received from an ambient temperature sensor (e.g., of sensors 150 of FIG. 1B) coupled to the control system.

At step 804, the control system processor may determine whether freeze protection is “ON” (e.g., whether a freeze protection setting is enabled). If freeze protection is “OFF” (e.g., disabled), the method 800 ends. Otherwise, if freeze protection is “ON”, the method 800 proceeds to step 806.

At step 806, the control system processor identifies circuits (e.g., pool/spa device circuits) that have been assigned freeze protection (e.g., as defined in a memory of the control system load center 102 of FIG. 1A). For example, circuits corresponding to the control of various pumps (e.g., pumps 144 of FIG. 1B) and valve actuators (e.g., of smart valves 142 of FIG. 1B) may be assigned freeze protection. Some circuits may be assigned freeze protection by default, while other circuits may need to be assigned freeze protection via user interaction with the user interface.

At step 808, the control system processor activates (e.g., via electronic communication) the identified circuits. For example, the corresponding pumps may be activated and the corresponding valve actuators may be opened to cause water to flow through the pool/spa, thereby decreasing the likelihood that pipes of the pool/spa system will freeze and/or burst and potentially preventing such incidents entirely. In some embodiments, activating the identified circuits may correspond to the activation of a freeze protection mode.

At step 810, the control system processor may prevent heaters (e.g., heaters 146 of FIG. 1B) from automatically activating while the freeze protection mode is active. For example, if a heater is scheduled to activate at a time that the freeze protection mode happens to be active, the control system processor may prevent the heater from activating despite its activation being scheduled. In some embodiments, a user may override this prevention by manually activating the heater via a local or remote control device (e.g., control panels 116, 126 or user devices 127, 128, 130, 134 of FIG. 1A).

At step 812, while freeze protection mode is active, the control system processor may periodically check to determine whether the freeze condition has ended. For example, the control system processor may periodically compare the predetermined ambient temperature threshold to the ambient temperature data generated by the ambient temperature sensor to determine whether the ambient temperature has risen above the ambient temperature threshold, in which case the freeze condition may be considered to have ended. If the control system processor determines that the freeze condition has not ended, the method 800 may return to step 810, continuing to prevent the heater(s) from automatically activating. Otherwise, the method 800 may proceed to step 814.

At step 814, the control system processor may deactivate the identified circuits, effectively ending/deactivating the freeze protection mode. The method 800 may then end and normal operation of the control system may resume.

In some embodiments, a “master cleaner” feature (e.g., logic) may be defined for one or more pool/spa device circuits, which may define rules for the operation of an automatic cleaner and associated pool/spa devices. For example, the master cleaner feature may prevent an automatic cleaner pump (e.g., of the pumps 144 of FIG. 1B) from running without a corresponding filter pump (e.g., of the pumps 144 of FIG. 1B) first being activated. For example, the master cleaner feature may force the filter pump to turn on for a predetermined amount of time prior to a scheduled activation of the automatic cleaner pump, and remain on during the operation of the automatic cleaner pump. The master cleaner feature may automatically shut off the automatic cleaner pump and/or prevent the automatic cleaner pump from running whenever a spa pump (e.g., of the pumps 144 of FIG. 1B) is switched on. The master cleaner feature may automatically shut off the automatic cleaner pump when a solar heater (e.g. of heaters 146 of FIG. 1B) is activated and may prevent the automatic cleaner pump from being activated until either the solar heater is turned off or until a predetermined time period has elapsed.

FIG. 9 shows an illustrative process flow chart for a method 900 by which functions of a master cleaner feature (e.g., control system state) may be performed. At step 902, a control system processor (e.g., control system processor 103 of control system load center 102 of FIGS. 1A, 1B) of a pool/spa control system determines that a master cleaner feature has been activated. For example, the master cleaner feature may be activated in response to a corresponding interaction between a user and a corresponding screen of user interface of a local or remote control device (e.g., control panels 116, 126 or user devices 127, 128, 130, 134 of FIG. 1A), or may be activated as a default setting of the control system.

At step 904, the control system processor periodically monitors status of pool/spa devices (e.g., pool/spa devices 110 of FIG. 1B) assigned to the master cleaner feature. For example, the control system processor may monitor when an automatic pool cleaner pump (e.g., of pumps 144 of FIG. 1B) corresponding to an automatic pool cleaner (e.g., automatic cleaner 156 of FIG. 1B) is scheduled to activate, may monitor the status of a spa pump (e.g., of pumps 144 of FIG. 1B), and may monitor the status of a solar heater (e.g., of heaters 146 of FIG. 1B).

At step 906, the control system processor determines, based on a pre-defined and/or user-defined schedule, whether the automatic pool cleaner pump is scheduled to activate sooner than a predetermined amount of time t_(TH) (e.g., 5 minutes). If not, the method proceeds to step 912. If so, the method proceeds to step 908.

At step 908, the control system processor forces a filter pump (e.g., of pumps 144 of FIG. 1B) of the pool to activate.

At step 910, the control system processor activates the automatic pool cleaner pump at the scheduled time. In this way, the filter pump may be forced to run for the predetermined amount of time t_(TH) (e.g., around 5 minutes) prior to the activation of the automatic pool cleaner pump. This may provide a priming delay for the automatic pool cleaner pump.

At step 912, the control system processor determines whether the spa pump is on. If the spa pump is on, the method 900 proceeds to step 914. If the spa pump is off, the method 900 proceeds to step 918.

At step 914, the control system processor prevents the automatic pool cleaner pump from running.

At step 916, the control system processor determines whether the spa pump is off. If the spa pump is not off, the method 900 returns to step 914 and the control system processor continues to prevent the automatic pool cleaner from running. If the spa pump is off, then the method 900 returns to step 904, and monitoring of the pool/spa devices associated with the master cleaner feature continues.

At step 918, the control system processor determines whether the solar heater is on. If the solar heater is on, the method 900 proceeds to step 920. If the spa pump is off, the method 900 returns to step 904, and monitoring of the pool/spa devices associated with the master cleaner feature continues. Step 918 may be skipped if the solar heater has been running uninterrupted for longer than the predetermined time period defined in step 922.

At step 920, the control system processor prevents the automatic pool cleaner pump from running.

At step 922, the control system processor determines whether the solar heater is off or if a predetermined time period (e.g., five minutes) has elapsed since the solar heater was turned on. If either both conditions are false, the method 900 returns to step 920 and the control system processor continues to prevent the automatic pool cleaner pump from running. If either condition is true, the method 900 returns to step 904 and monitoring of the pool/spa devices associated with the master cleaner feature continues.

It should be understood that steps 906, 908, and 910 may be performed in parallel with steps 912, 14, and 916, and with steps 918, 920, and 922, in some embodiments.

One or more pool/spa devices (e.g., pool/spa devices 110 of FIGS. 1A, 1B) coupled to a control system (e.g., coupled to control system load center 102 or expansion panels 108 of FIGS. 1A, 1B) may include on-board processing hardware that operates according to firmware stored on an associated memory device. Updated versions of this firmware may be released from time to time by device manufacturers. Conventionally, these firmware updates would need to be installed on the corresponding pool/spa device via a direct connection between a user's computer (on which the firmware update in question had previously been downloaded) and the pool/spa device itself. Depending on the location of the pool/spa device, such conventional methods may be inconvenient or impractical. However, with the control system of the present disclosure firmware updates may be automatically retrieved via a connection to a firmware update server via a WAN or the internet, and the control system may distribute the firmware update to the pool/spa device being updated. These automatic firmware updates may be performed with little or no input from a user, which may allow pool/spa devices to be easily maintained with the most up-to-date firmware.

FIG. 10 shows an illustrative process flow chart for a method 1000 by which a control system (e.g., control system load center 102 of FIGS. 1A and 1B) may identify the availability of, retrieve, and distribute, one or more firmware updates for pool/spa devices (e.g., pool/spa devices 110 of FIGS. 1A and 1B) coupled to the control system. At step 1002 a control system processor (e.g., control system processor 103 of FIG. 1A) of the control system may determine that a firmware update is available for a connected device (e.g., a pool/spa device). For example, the control system processor may periodically receive notifications of available firmware updates from a firmware server (e.g., one of servers 136, 137 of FIG. 1A) via a connection to the internet (e.g., internet/WAN cloud 132 of FIG. 1A) via a base station/gateway router (e.g., base station/gateway/router 124 of FIG. 1A) and a wireless transceiver (e.g., wireless transceiver 122 of FIG. 1A).

At step 1004, the control system processor may determine whether a firmware update mode of the control system is enabled. For example, the firmware update mode may be enabled via selection of a corresponding setting by a user via a corresponding setting screen (e.g., accessible via selection of icon 218 of FIG. 2) of a user interface of a local or remote control device (e.g., control panels 116, 126 or user devices 127, 128, 130, 134 of FIG. 1A). If the firmware update mode is enabled, the method 1000 proceeds to step 1006. If the firmware update mode is not enabled, the method 1000 ends.

At step 1006, the control system processor automatically retrieves the firmware update that was determined to be available at step 1002 from the firmware server (e.g., via the internet).

At step 1008, the control system processor sends the firmware update to a connected device (e.g., of pool/spa devices 110) to which the firmware update corresponds. For example, the control system processor may “push” the firmware update to the connected device.

FIG. 11A shows an illustrative backend architecture 1100 that may facilitate the collection and storage of sensor data, usage data, and/or device status information from a pool/spa control system (e.g., corresponding to pool/spa devices 110; via control system load panel 102, wireless transceiver 122, base station/gateway/router 124, and internet/WAN cloud 132 of FIGS. 1A, 1B), the distribution of sensor data, usage data, and/or device status information to one or more client computer devices (e.g., user devices 127, 128, 130, 134 of FIG. 1A) for display on one or more user interface screens thereof (e.g., as part of a usage screen such as usage screens 300, 306 of FIGS. 3A and 3B), and/or the routing of commands received from client computer devices operating in a remote mode (e.g., user devices 127, 128, 130, 134, FIG. 1A) to the pool/spa control system.

As shown, the backend architecture 1100 may include a load balancer 1110, a first server or server cluster 1112, a second server or server cluster 1118, a communication bus/platform1124, a database server 1126, a web gateway 1132, and a remote monitoring server or server cluster 1134. The first server or server cluster 1112 may include a web server 1114, which may be an Internet Information Services (IIS), and a web application programming interface (API) server 1116. The web server 1114 may be connected to the web API block 1116. In some embodiments, the functions of the web server 1114 and the web API server 1116 may be combined into a single server. The second server or server cluster 1118 may include a web server 1120 and a web API server 1122. The web server block 1120 may be connected to the web API server 1122. In some embodiments, the functions of the web server 1120 and the web API server 1122 may be combined into a single server. The database server 1126 may be a structured query language (SQL) server, and/or may include one or more databases 1128 . The remote monitoring server or server cluster 1134 may include a remote pool/spa API server 1136 and a remote client API server 1138.

The first and second servers or server clusters 1112 and 1118 may be coupled, through the load balancer 1110, to one or more pool/spa control systems 1102 (e.g., corresponding to the control system load center 1102 of FIGS. 1A and 1B), and/or clients 1104,.The pool/spa control systems 1102 and the clients 1104 may each connect to the first server or server cluster 1112 or the second server or server cluster 1118 via the load balancer 1110. For example, a given pool/spa control system 1102 may maintain a persistent connection to the web API server 1116 or the web API server 1122 via a “heartbeat” signal. The heartbeat signal may be periodically sent to the web API server 1116 or 1118, which may generate a heartbeat acknowledgment that is sent back to the given pool/spa control system 1102. The web API server may expect to receive a predetermined number of heartbeat signals from the given pool/spa control system 1102 in a given time period. The given pool/spa control system 1102 may expect to receive a heartbeat acknowledgement for each heartbeat signal sent by the given pool/spa control system 1102. If more than a predetermined number of expected heartbeat signals or heartbeat acknowledgements are lost (e.g., not received) over a given period, the connection between the pool/spa control system 1102 and the server or server cluster 1112 may be terminated (either by the given pool/spa control system 1102 or by the web API) and, in some embodiments, automatically reestablished (e.g., by the given pool/spa control system 1102). The given pool/spa control system 1102 may initiate the connection to the server or server cluster 1112, which may allow for the connection to be established without the need to reconfigure a firewall of the local network to which the given pool/spa control system 1102 is connected.

The load balancer 1110 may be implemented via software (e.g., as part of the web gateway 1132) or stand-alone hardware, and may route network traffic (e.g., received from the pool/spa control systems 1102 or the clients 1104) to either the first server or server cluster 1112, the second server or server cluster 1118, or another connected server or server cluster, according a scheduling algorithm. For example, the scheduling algorithm may identify which of the servers or server clusters 1112 or 1118 are the least busy (e.g., determined based on the number of established connections of each server/server cluster, average available bandwidth of each server/server cluster, how much traffic has recently been assigned to each server/server cluster, geographic location, capabilities, up/down status, least response times, reported load, etc.).

For example, initially, a given client of the clients 1104 may connect to a web gateway 1132 via an initially unsecure connection 1106 (e.g., corresponding to the hyper-text transfer protocol (HTTP)), which may authenticate the given client (e.g., using a username/password combination or a pre-shared key or token). If a given client 1104 fails to properly authenticate via the web gateway 1132, the web gateway 1132 may disallow the given client 1104 from connecting to the servers/server clusters 1112, 1118, 1126. In contrast, after successful authentication via the web gateway 1132, the given client 1104 may communicate with the server/server clusters 1112 or 1118 assigned via the load balancer 1110 using a secure connection 1105 (e.g., corresponding to a Web Socket communication protocol that provides full-duplex communication channels between devices over a single TCP connection), which may bypass the web gateway 1132. For example, the clients 1104 may include mobile user devices (e.g., mobile devices 128 of FIG. 1A), web browsers or dedicated applications running on personal computer devices (e.g., computing devices 130 of FIG. 1A), voice assistant clients, or other applicable clients.

The remote monitoring server or server cluster 1134 may be connected to the pool/spa control systems 1102, one or more remote viewer clients 1108 (e.g., mobile user devices, web browsers, dedicated applications running on personal computer devices, voice assistant clients, or other applicable clients), and the database server 1126. Specifically, the remote pool/spa API server 1136 may be coupled to the pool/spa control systems 1102 via respective TCP protocol connections, and may be communicatively connected to the database server 1126. The remote client API server 1138 may be connected to the remote viewer clients 1108 via respective HTTPS protocol connections, and may be connected to the database server 1126.

For example, the remote viewer clients 1108 may correspond to a computer system that is executing remote viewer software. The remote viewer software may display sensor data, usage data, pool/spa device state data, and/or alerts/alert data corresponding to one or more of the pool/spa control systems 1102 via a user interface (e.g., a “remote monitoring dashboard”) shown on a given remote viewer client 1108, without allowing the given remote viewer client 1108 to issue commands to the one or more pool/spa control systems 1102 (although in some embodiments remote viewer clients may be assigned limited permissions to issue commands to the one or more pool/spa control systems 1102, such as to change chemical or temperature set points of the one or more pool/spa control systems 1102).

The remote monitoring server 1134 may provide a producer-consumer system. For example, the remote viewer clients 1108 (consumers) may retrieve system data (e.g., sensor data, pool/spa device status data, usage data, alerts/alert data, etc.) corresponding to one or more pool/spa control systems 1102 from the databases 1128 via the remote client API server 1138 (e.g., which retrieves the system data and pushes it to one or more of the remote viewer clients 1108). The pool/spa control systems 1102 (producers) may upload (e.g., push) system data to the databases 1128 via the remote pol/spa API 1136.

The web API server 1116 of the server or server cluster 1112 may be coupled to the database 1128 of the database server 1126. The web API server 1122 of the server or server cluster 1118 may also be coupled to the database 1128 of the database server 1126.

The web servers 1114 and 1120 (e.g., which may be an Internet Information Services server) may be configured to host the web applications displayed via a user interface of a given client 1104. The web API servers 1116 and 1122 may host server-side programmatic interfaces accessible via the web servers 1114 and 1120, respectively. For example, the web API implemented by one of the web API servers 1116 or 1122 handles requests and responses associated with the uploading of data to the databases 1128, the retrieval of data from the databases 1128, and the routing of data between the server or server cluster 1112 and the server or server cluster 1118.

For example, a given pool/spa control system 1102 may periodically provide system data (e.g., sensor data, pool/spa device status data, usage data, alerts/alert data, etc. related to the pool and/or spa devices to which it is connected) to the database(s) 1128 via one or more data paths that may include i) the load balancer 1110, the web server 1114, the web API server 1116, and the database server 1126; ii) the load balancer 1110, the web server 1120, the web API server 1122, and the database server 1126; and/or iii) the remote pool/spa API server 1136. For example, the given pool/spa control system 1102 may store all system data locally, and may periodically upload some or all of the locally stored system data to the databases 1128. In some embodiments, a given client 1104, if connected to a local network to which a given pool/spa control system 1102 is connected, may instead be operated in a “local” mode, in which, rather than retrieving system data from the databases 1128, the given client 1104 retrieves system data directly from the memory of the given pool/spa control system 1102 via the local network.

For example, a given client 1104 may retrieve system data (e.g., sensor data, pool/spa device status data, usage data, alerts/alert data, etc.) from the database(s) 1128 in order to display that data on a corresponding screen of the user interface of the given client 1104. The data path by which the database(s) 1128 may route the requested data to the given client 1104 may include i) the database server 1126, the web API server 1116, the web server 1114, and the load balancer 1110; and/or ii) the database server 1128, the web API server 1122, the web server 1120.

For example, a given remote viewer client 1108 may retrieve system data (e.g., sensor data, pool/spa device status data, usage data, alerts/alert data, etc.) from the database(s) 1128 in order to display that data on a corresponding screen of the user interface of the given remote viewer client 1108. The data path by which the database(s) 1128 may route the requested data to the given remote viewer client 1108 may include the database server 1126 and the remote client API server 1138.

For example, when an alert is triggered at a given pool/spa control system 1102, the given pool/spa control system 1102 sends alert data to the web API (web API 1116 or 1122) of the server or server cluster (server or server cluster 1112 or 1118) to which it has been assigned by the load balancer 1110. The web API may then distribute an alert to one or more user devices of the clients 1104 (e.g., which may depend on the types of alert notifications that have been enabled for the given pool/spa control system 1102). For example, the web API may cause an e-mail, text (short message service (SMS)) message, and/or push notification to be sent to a given client 1104 and/or may activate an alert icon shown on the user interface of the given client 1104, in response to alert data received from the given pool/spa control system 1102.

The web API 1116 of the first server 1112 may be communicatively coupled to the web API 1122 of the second server 1118 via the communication bus/platform 1124 (e.g., which may be an Enterprise Serial Bus (ESB) or other applicable communication bus/platform). The communication bus/platform 1124 may manage communication between the server or server cluster 1112 and the server or server cluster 1118. In the illustrative example of FIG. 11B, a client 1104-1 is connected to the server or server cluster 1118 (e.g., based on assignment by the load balancer 1110) and a pool/spa control system 1102-1 is connected to the server or server cluster 1112 (e.g., based on assignment by the load balancer 1110). It should be noted that FIG. 11B provides a simplified view of a portion of the backend architecture 1100, in which some components/devices are not shown. The client 1104-1 may issue commands (e.g., in response to interaction with one or more icons/buttons of the user interface displayed at the client 1104-1) to the pool/spa control system 1102-1. For example, the client 1104-1 may transmit command data to the web server 1120, which may route the command data to the web API 1122, which may route the command data to the web API 1116 via the communication bus/platform 1124, which may route the command data to the web server 1114, which may router the command data to the pool/spa control system 1102-1. Upon receiving and processing the command data, the pool/spa control system 1102-1 may perform one or more actions (e.g., opening/closing valves, changing pump speeds, turning a pump on or off, adjusting a temperature setpoint of a heater, activating/deactivating a heater, adjusting jet pressure, adjusting a chemical setpoint of a chemical controller, activating/deactivating an automatic cleaner, turning lights on/off, initiating light shows, changing light colors, and/or scheduling actions to be performed during a time period defined in the command data) in response to the command data. The communication bus/platform 1124 may connect the server or server cluster 1112 to the server or server cluster 1118, such that the command data may be passed from the web API server 1122 to the web API server 1116.

It will be appreciated by those skilled in the art that while the invention has been described above in connection with particular embodiments and examples, the invention is not necessarily so limited, and that numerous other embodiments, examples, uses, modifications and departures from the embodiments, examples and uses are intended to be encompassed by the claims attached hereto. The entire disclosure of each patent and publication cited herein is incorporated by reference, as if each such patent or publication were individually incorporated by reference herein. Various features and advantages of the invention are set forth in the following claims. 

1. A system comprising: a plurality of pool or spa devices; a wireless transceiver; a control system coupled to a remote device via an electronic communication network and the wireless transceiver, the control system being configured to selectively control a plurality of circuits of the plurality of pool or spa devices, the control system comprising: a memory device configured to store definitions of a first feature circuit and a first logic function, the first feature circuit corresponding to a first subset of the plurality of circuits and being associated with the first logic function, the first logic function defining how the first subset of the plurality of circuits is to be controlled when the first feature circuit is activated; a plurality of communication ports comprising at least one local area network communication port and a plurality of serial communication ports, the at least one local area communication network port being coupled to the wireless transceiver, and the plurality of serial communication ports being coupled to at least one of the plurality of pool or spa devices; a processor coupled to the plurality of communication ports and the memory device, the processor being configured to execute computer-readable instructions which, when executed, cause the processor to: receive command data from the remote device via the electronic communication network; and in response to a first command of the command data, activate the first feature circuit to selectively control the first subset of the plurality of circuits according to the first logic function.
 2. The system of claim 1, wherein the plurality of pool or spa devices comprises a plurality of submersible lights, wherein the plurality of circuits comprises a plurality of light circuits of the plurality of submersible lights, and wherein the computer-readable instructions, when executed, further cause the processor to: selectively control a subset of the plurality of light circuits corresponding to a subset of the plurality of submersible lights to control colors output by the subset of the plurality of submersible lights, the subset of the plurality of light circuits corresponding to a light group defined in the memory device of the control system.
 3. The system of claim 2, wherein the command data comprises a swim command, wherein the computer-readable instructions, when executed, further cause the processor to: control the subset of the plurality of light circuits to synchronize the subset of the plurality of submersible lights to output light of the same color; control the subset of the plurality of light circuits to cause a first light of the subset of the plurality of submersible lights to begin changing color according to a predefined sequence; and following a predefined period of delay, control the subset of the plurality of light circuits to cause a second light of the subset of the plurality of submersible lights to begin changing color according to the predefined sequence, wherein the first light and the second light are defined according to an ordered list associated with the light group.
 4. The system of claim 1, wherein the computer-readable instructions, when executed, further cause the processor to: receive a first ambient temperature from a temperature sensor of the pool or spa devices; compare the first ambient temperature to a predefined ambient temperature threshold to determine that the first ambient temperature is less than or equal to the predefined ambient temperature threshold, defining a freeze condition; determine that a freeze protection setting is enabled; activate a freeze protection mode; activate a second subset of the plurality of circuits that are indicated to be assigned freeze protection, where activating the second subset causes at least one pump of the plurality of pool or spa devices to turn on and causes at least two valves of the plurality of pool or spa devices to turn on; prevent a heater of the pool or spa devices from being activated while the freeze protection mode is active; receive a second ambient temperature from the temperature sensor; determine that the freeze protection mode is active; compare the second ambient temperature to the predefined ambient temperature threshold to determine that the second ambient temperature is greater than the predefined ambient temperature threshold, indicating an end of the freeze condition; deactivate the second subset of the plurality of circuits; and deactivate the freeze protection mode.
 5. The system of claim 1, wherein the computer-readable instructions, when executed, further cause the processor to: activate an automatic pool cleaner pump of the pool or spa devices based on a second command of the command data; force a filter pump of the pool or spa devices to activate prior to activating the automatic pool cleaner pump; determine that a spa pump of the pool or spa devices has been activated; automatically deactivate the automatic pool cleaner pump in response to determining that the spa pump has been activated; automatically activate the automatic pool cleaner pump in response to determining that the spa pump has been deactivated; determine that a solar heater of the pool or spa devices has been activated; and automatically deactivate the automatic pool cleaner pump for a predetermined time period in response to determining that the solar heater has been activated.
 6. The system of claim 1, wherein the computer-readable instructions, when executed, further cause the processor to: determine that a second command of the command data corresponds to a single button press at a user interface of the remote device, the single button press being associated with activating a feature circuit group, wherein the first feature circuit and a second feature circuit are assigned to the feature circuit group, and wherein the second feature circuit corresponds to a second subset of the plurality of circuits and a second logic function; and simultaneously activate the first feature circuit and the second feature circuit in response to the single button press.
 7. A method comprising: establishing a connection over a computer network between a controller of a pool control system and one or more servers of the pool control system, the controller comprising a processor, a memory electronically accessible by the processor, a wireless transceiver in electronic communication with the processor and configured to connect to the computer network, and a plurality of communication ports electrically connecting the controller to at least one pool or spa device, the one or more servers being geographically remote from the controller; receiving first command data on the one or more servers from a client device configured to display a user interface and to generate the first command data in response to a detected interaction with the user interface; sending, with the one or more servers, the first command data to the controller; in response to the first command data, storing, by the processor in the memory of the controller, definitions of a first feature circuit and a first logic function associated with the first feature circuit, the first feature circuit corresponding to a first plurality of circuits corresponding to the at least one pool or spa device, the first logic function defining how the first plurality of circuits is to be controlled when the first feature circuit is activated; receiving second command data on the one or more servers from the client device, the client device being configured to generate the second command data in response to a second detected interaction with the user interface; receiving, by the processor, the second command data from the one or more servers; and in response to the second command data: determining, by the processor, that the second command data comprises a command to activate the first feature circuit; obtaining, by the processor, the definitions from the memory; identifying, by the processor, the first plurality of circuits based on the definition of the first feature circuit; and selectively controlling, by the processor, the first plurality of circuits according to the first logic function.
 8. The method of claim 7, the one or more servers comprising a first server and a second server, the method further comprising: receiving, on the first server, the first command data from the client device; sending, by the first server, the first command data to the second server via a communication bus; and sending, by the second server, the first command data to the controller.
 9. The method of claim 7, wherein the at least one pool or spa device comprises a plurality of submersible lights having a plurality of light circuits, the method further comprising: receiving, by the processor via the one or more servers, third command data, the third command data being generated by the client device in response to a third detected interaction with the user interface; and in response to the third command data, selectively controlling, by the processor, a subset of the plurality of light circuits corresponding to a subset of the plurality of submersible lights to control colors output by the subset of the plurality of submersible lights, the subset of the plurality of light circuits corresponding to a light group defined in the memory .
 10. The method of claim 9, wherein the third command data comprises a swim command, the method further comprising: controlling, by the processor, the subset of the plurality of light circuits to synchronize the subset of the plurality of submersible lights to output light of the same color; controlling, by the processor, the subset of the plurality of light circuits to cause a first light of the subset of the plurality of submersible lights to begin changing color according to a predefined sequence; and following a predefined period of delay, controlling, by the processor, the subset of the plurality of light circuits to cause a second light of the subset of the plurality of submersible lights to begin changing color according to the predefined sequence, wherein the first light and the second light are defined according to an ordered list associated with the light group.
 11. The method of claim 7, wherein the at least one pool or spa device includes a temperature sensor, a pump, at least two valves, and a heater, the method further comprising: receiving, by the processor, a first ambient temperature value from the temperature sensor; comparing, by the processor, the first ambient temperature value to a predefined ambient temperature threshold to determine that the first ambient temperature value is less than or equal to the predefined ambient temperature threshold, defining a freeze condition; determining, by the processor, that a freeze protection setting is enabled; activating, by the processor, a freeze protection mode; activating, by the processor, a second plurality of circuits that are indicated to be assigned freeze protection, where activating the second plurality of circuits causes the pump to turn on and causes the at least two valves to turn on; preventing, by the processor, the heater from being activated while the freeze protection mode is active; receiving, by the processor, a second ambient temperature from the temperature sensor; determining, by the processor, that the freeze protection mode is active; comparing, by the processor, the second ambient temperature to the predefined ambient temperature threshold to determine that the second ambient temperature is greater than the predefined ambient temperature threshold, indicating an end of the freeze condition; deactivating, by the processor, the second plurality of circuits; and deactivating, by the processor, the freeze protection mode.
 12. The method of claim 7, wherein the at least one pool or spa device includes an automatic pool cleaner pump, a filter pump, a spa pump, and a solar heater, the method further comprising: receiving, by the processor via the one or more servers, third command data, the third command data being generated by the client device in response to a third detected interaction with the user interface; activating, by the processor, the automatic pool cleaner pump in response to the third command data; automatically forcing, by the processor, the filter pump to activate prior to activating an automatic pool cleaner pump; determining, by the processor, that the spa pump has been activated; automatically deactivating, by the processor, the automatic pool cleaner pump in response to determining that the spa pump has been activated; automatically activating, by the processor, the automatic pool cleaner pump in response to determining that the spa pump has been deactivated; determining, by the processor, that the solar heater has been activated; and automatically deactivating, by the processor, the automatic pool cleaner pump for a predetermined time period in response to determining that the solar heater has been activated.
 13. The method of claim 7, further comprising: receiving, by the processor via the one or more servers, third command data, the third command data being generated by the client device in response to a third detected interaction with the user interface; and determine, by the processor, that the third command data corresponds to a single button press at the user interface, the single button press being associated with activating a feature circuit group, wherein the first feature circuit and a second feature circuit are assigned to the feature circuit group, and wherein the second feature circuit corresponds to a second plurality of circuits corresponding to the at least one pool or spa device and to a second logic function; and simultaneously activate, by the processor, the first feature circuit and the second feature circuit in response to the single button press.
 14. A system comprising: a first web server communicatively coupled an electronic communication network; a first web application programming interface (API) server coupled to the first web server; a database server comprising at least one database, the database server being coupled to the first web API server; and a control system configured to control and collect system data from a plurality of pool and spa devices, the control system comprising: a memory device configured to store computer-readable instructions and to store the system data; and a processor configured to execute the computer-readable instructions, which, when executed, cause the processor to: periodically upload the system data to the at least one database via the first web server, the first web API server, and the database server; receive command data from a remote client device via the first web API server and the first web server; store, in response to a first command of the command data, definitions of a first feature circuit and a first logic function in a memory device of the control system, the first feature circuit corresponding to a first set of circuits of the plurality of pool or spa devices, the first logic function defining how the one or more circuits are to be controlled when the first feature circuit is activated; and in response to a second command of the command data: determine that the second command includes a request to activate the first feature circuit; obtain the definitions from the memory device; identify the first set of circuits based on the definitions; and control the first set of circuits according to the first logic function.
 15. The system of claim 14, wherein the system data comprises alert data, and wherein the first web API server is configured to send a notification of an alert corresponding to the alert data to the remote client device, the notification selected from the group consisting of: an e-mail, a short message service message, and a push notification.
 16. The system of claim 14, further comprising: a second web server communicatively coupled to the remote client device; a second web API server coupled to the second web server; and a load balancer configured to assign the remote client device to the second web server and to assign the control system to the first web server according to a scheduling algorithm.
 17. The system of claim 16, further comprising: a communication bus coupled between the second web API server and the first web API server, the communication bus being configured to route the command data from the second web API server to the first web API server.
 18. The system of claim 16, further comprising: a web gateway coupled between the remote client device and the load balancer, the web gateway being configured to authenticate the remote client device.
 19. The system of claim 14, wherein the computer-readable instructions, when executed, cause the processor to: periodically send heartbeat signals to the first web API server; receive heartbeat acknowledgements from the first web API server; determine that a predetermined number of expected heartbeat acknowledgements have been dropped; and automatically terminate, then reestablish a connection between the control system and the first web API server.
 20. The system of claim 14, wherein the computer-readable instructions, when executed, further cause the processor to: determine that a third command of the command data corresponds to a single button press detected at a user interface of the remote client device, the single button press being associated with activating a feature circuit group, wherein the first feature circuit and a second feature circuit are assigned to the feature circuit group, and wherein the second feature circuit corresponds to a second set of circuits of the plurality of pool or spa devices and to a second logic function; and simultaneously activate the first feature circuit and the second feature circuit in response to the single button press.
 21. The system of claim 14, further comprising: a remote monitoring server cluster coupled between the control system and the database server, and coupled between a remote viewer client and the database server, the remote monitoring server cluster comprising: a first API server configured to receive the system data from the control system and to push the system data to the at least one database of the database server; and a second API server configured to retrieve the system data from the database server, and configured to push the system data to the remote viewer client. 